﻿using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using ECOSYSTEM_Dominio;

namespace ECOSYSTEM_DAL
{
    public class CuentaBancoDAL
    {
        SqlConnection cnn;
        public Boolean guardarCuentaBanco(CuentaBanco laCuentaBanco) {
            try
            {
                cnn = (SqlConnection)ConexionSQL.getInstancia().getConexion();
                cnn.Open();

                SqlCommand cmd = new SqlCommand("RegistrarCuentaBanco", cnn);
                cmd.CommandType = CommandType.StoredProcedure;

                cmd.Parameters.Add("@CuentaBancoID", SqlDbType.Int);
                cmd.Parameters["@CuentaBancoID"].Direction = ParameterDirection.InputOutput;
                cmd.Parameters.Add("@NombreBanco", SqlDbType.NVarChar,100);
                cmd.Parameters.Add("@NroCuenta", SqlDbType.NVarChar,30);
                cmd.Parameters.Add("@Moneda", SqlDbType.NVarChar,10);
                cmd.Parameters.Add("@EmpresaProvedorID", SqlDbType.Int);

                cmd.Parameters["@CuentaBancoID"].Value = laCuentaBanco.CuentaBancoID;
                cmd.Parameters["@NombreBanco"].Value = laCuentaBanco.NomBanco;
                cmd.Parameters["@NroCuenta"].Value = laCuentaBanco.NroCuenta;
                cmd.Parameters["@Moneda"].Value = laCuentaBanco.MonedaCuenta;
                cmd.Parameters["@EmpresaProvedorID"].Value = laCuentaBanco.LaEmpresaProvedor;
                cmd.ExecuteNonQuery();
                laCuentaBanco.CuentaBancoID =(Int32)(cmd.Parameters["@CuentaBancoID"].Value);
            }
            catch (SqlException ex) { throw new Exception(ex.Message); }
            catch (Exception e) { throw new Exception(e.Message); }
            finally
            {
                if (cnn.State == ConnectionState.Open)
                {
                    cnn.Close();
                }
            }
            return true;
        }
        public Boolean ActualizarCuentaBanco(CuentaBanco laCuentaBanco, String NroCuentaNueva)
        {
            try
            {
                cnn = (SqlConnection)ConexionSQL.getInstancia().getConexion();
                cnn.Open();

                SqlCommand cmd = new SqlCommand("ActualizarCuentaBanco", cnn);
                cmd.CommandType = CommandType.StoredProcedure;

                cmd.Parameters.Add("@CuentaBancoID", SqlDbType.Int);
                cmd.Parameters.Add("@NombreBanco", SqlDbType.NVarChar, 100);
                cmd.Parameters.Add("@NroCuenta", SqlDbType.NVarChar, 30);
                cmd.Parameters.Add("@NroCuentaNueva", SqlDbType.NVarChar, 30);
                cmd.Parameters.Add("@Moneda", SqlDbType.NVarChar, 10);

                cmd.Parameters["@CuentaBancoID"].Value = laCuentaBanco.CuentaBancoID;
                cmd.Parameters["@NombreBanco"].Value = laCuentaBanco.NomBanco;
                cmd.Parameters["@NroCuenta"].Value = laCuentaBanco.NroCuenta;
                cmd.Parameters["@NroCuentaNueva"].Value= NroCuentaNueva;
                cmd.Parameters["@Moneda"].Value = laCuentaBanco.MonedaCuenta;
                cmd.ExecuteNonQuery();
            }
            catch (SqlException ex) { throw new Exception(ex.Message); }
            catch (Exception e) { throw new Exception(e.Message); }
            finally
            {
                if (cnn.State == ConnectionState.Open)
                {
                    cnn.Close();
                }
            }
            return true;
        }
        public DataTable ObtenerListaBancoPorEmpresa(Int32 RucProvedor) {
            DataTable lista = null;
            try
            {
                cnn = (SqlConnection)ConexionSQL.getInstancia().getConexion();
                cnn.Open();
                SqlDataAdapter da = new SqlDataAdapter("ObtenerListaBanco_x_Provedor", cnn);
                da.SelectCommand.CommandType = CommandType.StoredProcedure;
                da.SelectCommand.Parameters.Add("@EmpresaProvedorID", SqlDbType.NVarChar, 11);
                da.SelectCommand.Parameters["@EmpresaProvedorID"].Value = RucProvedor;
                lista = new DataTable();
                da.Fill(lista);
            }
            catch (SqlException ex) { throw new Exception(ex.Message); }
            catch (Exception e) { throw new Exception(e.Message); }
            finally
            {
                if (cnn.State == ConnectionState.Open)
                {
                    cnn.Close();
                }
            }
            return lista;
        }
    }
}
